package modelo;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.criterion.Restrictions;

import dao.imp.Base_DatosDAO;


public class Cliente {
	private String cedula_rif;
	private String nombre;
	private String apellido;
	private String telefono;
	private String ubicacion;
	private char estatus;
	//private List<Pago> pagos = new ArrayList<Pago>();
	
	public Cliente() {
		super();
	}
	
	public Cliente(String cedula_rif, String nombre, String apellido,
			String telefono, String ubicacion,char estatus) {
		super();
		this.cedula_rif = cedula_rif;
		this.nombre = nombre;
		this.apellido = apellido;
		this.telefono = telefono;
		this.ubicacion = ubicacion;
		this.estatus = estatus;
	}

	public Cliente(String cedula_rif, String nombre, String apellido,
			String telefono, String ubicacion, char estatus, List<Pago> pagos) {
		super();
		this.cedula_rif = cedula_rif;
		this.nombre = nombre;
		this.apellido = apellido;
		this.telefono = telefono;
		this.ubicacion = ubicacion;
		this.estatus = estatus;
		//this.pagos = pagos;
	}

	public String getCedula_rif() {
		return cedula_rif;
	}

	public void setCedula_rif(String cedula_rif) {
		this.cedula_rif = cedula_rif;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public String getTelefono() {
		return telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public String getUbicacion() {
		return ubicacion;
	}
	
	public char getEstatus() {
		return estatus;
	}

	public void setEstatus(char estatus) {
		this.estatus = estatus;
	}

	public void setUbicacion(String ubicacion) {
		this.ubicacion = ubicacion;
	}

	/*public List<Pago> getPagos() {
		return pagos;
	}*/

	/*public void setPagos(List<Pago> pagos) {
		this.pagos = pagos;
	}*/
	
	public List<Pago> getPagos(){
		Base_DatosDAO conexion = new Base_DatosDAO();
		List<Cuenta> cuentas = conexion.findByProperty(Cuenta.class, Restrictions.eq("cliente", this));
		List<Pago> pagos = new ArrayList<Pago>();
		for (int i=0;i<cuentas.size();i++){
			for (int x=0;x<cuentas.get(i).getPagos().size();x++){
				pagos.add(cuentas.get(i).getPagos().get(x));
			}
		}
		return pagos;
		
	}
	
	public List<Cuenta> getCuentas(){
		Base_DatosDAO conexion = new Base_DatosDAO();
		List<Cuenta> cuentas = conexion.findByProperty(Cuenta.class, Restrictions.eq("cliente", this));
		return 	cuentas;
	}
	
	public double MontoTotalPagos(){
		List<Cuenta> cuentas = getCuentas();
		double total = 0;
		for (int i=0;i<cuentas.size();i++){
			total+=cuentas.get(i).Calcular_Monto_Pagos();
		}
		return total;
	}
	
}
